import 'snooperLexersym.dart';
import 'package:lpg2/lpg2.dart';
 class snooperLexerprs implements ParseTable {
    static const  int ERROR_SYMBOL = 0;
    int   getErrorSymbol(){ return ERROR_SYMBOL; }

    static const  int SCOPE_UBOUND = 0;
    int   getScopeUbound(){ return SCOPE_UBOUND; }

    static const  int SCOPE_SIZE = 0;
    int   getScopeSize(){ return SCOPE_SIZE; }

    static const  int MAX_NAME_LENGTH = 0;
    int   getMaxNameLength(){ return MAX_NAME_LENGTH; }

    static const  int NUM_STATES = 35;
    int   getNumStates(){ return NUM_STATES; }

    static const  int NT_OFFSET = 102;
    int   getNtOffset(){ return NT_OFFSET; }

    static const  int LA_STATE_OFFSET = 527;
    int   getLaStateOffset(){ return LA_STATE_OFFSET; }

    static const  int MAX_LA = 1;
    int   getMaxLa(){ return MAX_LA; }

    static const  int NUM_RULES = 221;
    int   getNumRules(){ return NUM_RULES; }

    static const  int NUM_NONTERMINALS = 21;
    int   getNumNonterminals(){ return NUM_NONTERMINALS; }

    static const  int NUM_SYMBOLS = 123;
    int   getNumSymbols(){ return NUM_SYMBOLS; }

    static const  int START_STATE = 222;
    int   getStartState(){ return START_STATE; }

    static const  int IDENTIFIER_SYMBOL = 0;
    int   getIdentifier_SYMBOL(){ return IDENTIFIER_SYMBOL; }

    static const  int EOFT_SYMBOL = 102;
    int   getEoftSymbol(){ return EOFT_SYMBOL; }

    static const  int EOLT_SYMBOL = 103;
    int   getEoltSymbol(){ return EOLT_SYMBOL; }

    static const  int ACCEPT_ACTION = 305;
    int   getAcceptAction(){ return ACCEPT_ACTION; }

    static const  int ERROR_ACTION = 306;
    int   getErrorAction(){ return ERROR_ACTION; }

    static const bool  BACKTRACK = false;
    bool  getBacktrack() { return BACKTRACK; }

    int  getStartSymbol() { return lhs(0); }
    bool  isValidForParser()  { return snooperLexersym.isValidForParser; }


     static  const List<int> _isNullable = [0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,1,0,0,0,0,0,0,0,0,
            0,0,0
        ];
       bool isNullable(int index){ return  snooperLexerprs._isNullable[index] != 0; }

     static  const List<int> _prosthesesIndex = [0,
            11,14,15,16,3,12,21,2,4,5,
            6,7,8,9,10,13,17,18,19,20,
            1
        ];
       int prosthesesIndex(int index){ return  snooperLexerprs._prosthesesIndex[index]; }

     static  const List<int> _isKeyword = [0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0
        ];
       bool isKeyword(int index){ return  snooperLexerprs._isKeyword[index] != 0; }

     static  const List<int> _baseCheck = [0,
            1,1,3,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,2,2,2,2,2,2,2,2,2,
            2,2,2,2,2,3,2,2,3,1,
            1,2,1,2,2,1,2,2,2,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,2,0,2,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,2,2,2,2,2,2,
            2,2,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            2
        ];
       int baseCheck(int index){ return  snooperLexerprs._baseCheck[index]; }
     static const List<int> _rhs = snooperLexerprs._baseCheck;
    int    rhs(int index){ return snooperLexerprs._rhs[index]; }

     static  const List<int> _baseAction = [
            8,8,8,8,8,8,8,8,8,8,
            8,8,8,8,8,8,8,8,8,8,
            8,8,8,8,8,8,8,8,8,8,
            8,8,8,8,8,8,8,8,8,8,
            8,8,8,8,8,8,8,8,8,8,
            8,8,14,5,5,9,11,11,12,12,
            2,2,2,2,2,2,2,2,2,2,
            3,3,3,3,3,3,3,3,3,3,
            3,3,3,3,3,3,3,3,3,3,
            3,3,3,3,3,3,4,4,4,4,
            4,4,4,4,4,4,4,4,4,4,
            4,4,4,4,4,4,4,4,4,4,
            4,4,1,1,1,1,1,17,17,17,
            17,17,17,17,17,10,10,18,18,18,
            18,18,18,18,18,18,18,18,18,18,
            18,18,18,18,18,18,18,18,18,18,
            18,18,18,18,18,19,19,19,19,19,
            19,19,19,6,6,6,15,15,20,20,
            20,20,20,20,20,20,20,20,20,20,
            20,20,20,20,20,20,20,20,20,20,
            20,20,20,20,20,20,20,20,20,20,
            16,16,16,16,16,16,16,16,7,7,
            13,13,203,53,125,122,123,263,56,220,
            232,2,97,279,242,253,51,103,127,298,
            122,123,1,210,296,122,123,386,53,125,
            122,123,268,280,136,129,133,382,59,594,
            221,380,212,452,54,125,122,123,518,54,
            125,122,123,302,134,125,122,123,98,301,
            371,584,586,384,595,57,597,599,237,588,
            590,592,601,602,200,52,288,375,288,378,
            519,604,605,606,306,306
        ];
       int baseAction(int index){ return  snooperLexerprs._baseAction[index]; }
     static const List<int>  _lhs =snooperLexerprs._baseAction;
   int   lhs(int index){ return snooperLexerprs._lhs[index]; }

     static  const List<int> _termCheck = [0,
            0,1,2,3,4,5,6,7,8,9,
            10,11,12,13,14,15,16,17,18,19,
            20,21,22,23,24,25,26,27,28,29,
            30,31,32,33,34,35,36,37,38,39,
            40,41,42,43,44,45,46,47,48,49,
            50,51,52,53,54,55,56,57,58,59,
            60,61,62,63,64,65,66,67,68,69,
            70,71,72,73,74,75,76,77,78,79,
            80,81,82,83,84,85,86,87,88,89,
            90,91,92,93,94,95,0,0,98,99,
            100,101,0,1,2,3,4,5,6,7,
            8,9,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,24,25,26,27,
            28,29,30,31,32,33,34,35,36,37,
            38,39,40,41,42,43,44,45,46,47,
            48,49,50,51,52,53,54,55,56,57,
            58,59,60,61,62,63,64,65,66,67,
            68,69,70,71,72,73,74,75,76,77,
            78,79,80,81,82,83,84,85,86,87,
            88,89,90,91,92,93,94,95,102,0,
            98,99,0,1,2,3,4,5,6,7,
            8,9,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,24,25,26,27,
            28,29,30,31,32,33,34,35,36,37,
            38,39,40,41,42,43,44,45,46,47,
            48,49,50,51,52,53,54,55,56,57,
            58,59,60,61,62,63,64,65,66,67,
            68,69,70,71,72,73,74,75,76,0,
            78,79,80,81,82,83,84,0,86,87,
            88,89,90,91,92,93,94,95,96,97,
            0,0,100,2,3,4,5,6,7,8,
            9,10,11,12,13,14,15,16,17,18,
            19,20,21,22,23,24,25,26,27,28,
            29,30,31,32,33,34,35,36,37,38,
            39,40,41,42,43,44,45,46,47,48,
            49,50,51,52,53,54,55,56,57,58,
            59,60,61,62,63,64,65,67,68,69,
            0,70,2,3,0,96,97,0,77,0,
            1,0,1,0,1,0,85,2,3,4,
            5,6,7,8,9,10,11,12,13,14,
            15,16,17,18,19,20,21,22,23,24,
            25,26,27,28,29,30,31,32,33,34,
            35,36,37,38,39,40,41,42,43,44,
            45,46,47,48,49,50,51,52,53,54,
            55,56,57,58,59,60,61,62,63,64,
            65,0,73,2,3,4,5,6,7,8,
            9,10,11,12,13,14,15,16,17,18,
            19,20,21,22,23,24,25,26,27,28,
            29,30,31,32,33,34,35,36,37,38,
            39,40,41,42,43,44,45,46,47,48,
            49,50,51,52,53,54,55,56,57,58,
            59,60,61,62,63,64,65,0,0,2,
            3,4,5,6,7,8,9,10,11,12,
            13,14,15,16,17,18,19,20,21,22,
            23,24,25,26,27,28,29,30,31,32,
            33,34,35,36,37,38,39,40,41,42,
            43,44,45,46,47,48,49,50,51,52,
            53,54,55,56,57,58,59,60,61,62,
            63,64,65,0,1,0,1,0,1,0,
            1,0,1,0,0,1,0,1,0,1,
            0,0,1,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,72,71,0,0,66,
            0,0,75,74,0,0,66,76,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0
        ];
       int termCheck(int index){ return  snooperLexerprs._termCheck[index]; }

     static  const List<int> _termAction = [0,
            5,510,399,425,376,377,378,379,380,381,
            382,383,384,385,386,387,388,389,390,391,
            392,393,394,395,396,397,398,400,401,297,
            402,403,404,405,406,407,408,409,410,411,
            412,413,414,415,416,417,418,419,420,421,
            422,423,424,426,427,366,367,368,369,370,
            371,372,373,374,375,432,493,520,521,519,
            488,501,495,508,484,485,514,499,494,489,
            490,492,496,497,498,500,502,503,504,505,
            506,507,509,294,486,487,306,135,491,511,
            515,522,306,469,399,425,376,377,378,379,
            380,381,382,383,384,385,386,387,388,389,
            390,391,392,393,394,395,396,397,398,400,
            401,430,402,403,404,405,406,407,408,409,
            410,411,412,413,414,415,416,417,418,419,
            420,421,422,423,424,426,427,366,367,368,
            369,370,371,372,373,374,375,432,466,437,
            438,436,309,459,454,467,443,444,445,458,
            453,449,450,452,455,456,457,273,460,461,
            462,463,464,465,468,448,446,447,305,206,
            451,470,306,286,399,425,376,377,378,379,
            380,381,382,383,384,385,386,387,388,389,
            390,391,392,393,394,395,396,397,398,400,
            401,430,402,403,404,405,406,407,408,409,
            410,411,412,413,414,415,416,417,418,419,
            420,421,422,423,424,426,427,280,367,368,
            369,370,371,372,373,374,375,432,259,480,
            481,479,278,282,281,261,290,289,291,6,
            283,257,337,325,284,321,322,125,334,335,
            332,333,336,320,329,287,317,318,524,525,
            4,306,247,399,425,376,303,378,379,380,
            302,382,383,384,385,386,387,388,301,390,
            391,392,300,394,299,396,397,398,400,401,
            430,402,403,404,405,406,407,408,409,410,
            411,412,413,414,415,416,417,418,419,420,
            421,422,423,424,426,427,366,367,368,369,
            370,371,372,373,374,375,432,480,481,479,
            60,476,483,482,124,524,525,89,477,22,
            341,25,342,18,351,50,478,399,425,376,
            377,378,379,380,381,382,383,384,385,386,
            387,388,389,390,391,392,393,394,395,396,
            397,398,400,401,430,402,403,404,405,406,
            407,408,409,410,411,412,413,414,415,416,
            417,418,419,420,421,422,423,424,426,427,
            366,367,368,369,370,371,372,373,374,375,
            432,1,293,399,425,376,377,378,379,380,
            381,382,383,384,385,386,387,388,389,390,
            391,392,393,394,395,396,397,398,400,401,
            430,402,403,404,405,406,407,408,409,410,
            411,412,413,414,415,416,417,418,419,420,
            421,422,423,424,426,427,366,367,368,369,
            370,371,372,373,374,375,432,55,87,399,
            425,376,377,378,379,380,381,382,383,384,
            385,386,387,388,389,390,391,392,393,394,
            395,396,397,398,400,401,430,402,403,404,
            405,406,407,408,409,410,411,412,413,414,
            415,416,417,418,419,420,421,422,423,424,
            426,427,366,367,368,369,370,371,372,373,
            374,375,432,21,348,20,349,8,345,7,
            344,10,347,24,17,350,13,340,9,346,
            306,37,352,83,75,71,306,306,306,306,
            306,306,306,306,306,306,306,306,306,306,
            306,306,306,306,306,306,306,306,306,306,
            306,306,306,306,306,306,306,306,306,306,
            306,306,306,306,306,306,306,306,306,306,
            306,306,306,306,306,354,353,306,306,292,
            306,306,339,338,306,306,355,364
        ];
       int termAction(int index){ return  snooperLexerprs._termAction[index]; }
      int  asb(int index) { return 0; }
      int  asr(int index) { return 0; }
      int  nasb(int index)  { return 0; }
      int  nasr(int index)  { return 0; }
      int  terminalIndex(int index)  { return 0; }
      int  nonterminalIndex(int index)  { return 0; }
      int  scopePrefix(int index)  { return 0;}
      int  scopeSuffix(int index)  { return 0;}
      int  scopeLhs(int index)  { return 0;}
      int  scopeLa(int index)  { return 0;}
      int  scopeStateSet(int index)  { return 0;}
      int  scopeRhs(int index)  { return 0;}
      int  scopeState(int index)  { return 0;}
      int  inSymb(int index)  { return 0;}
      String  name(int index) { return ""; }
   int  originalState(int state){ return 0; }
     int asi(int state ){ return 0; }
     int   nasi(int state ){ return 0; }
     int   inSymbol(int state){ return 0; }

    /**
     * assert(! goto_default);
     */
    int ntAction(int state,  int sym){
        return snooperLexerprs._baseAction[state + sym];
    }

    /**
     * assert(! shift_default);
     */
     int  tAction(int state,  int sym){
        var i = snooperLexerprs._baseAction[state],
            k = i + sym;
        return snooperLexerprs._termAction[ snooperLexerprs._termCheck[k] == sym ? k : i];
    }
    int   lookAhead( int la_state ,  int sym){
        var k = la_state + sym;
        return snooperLexerprs._termAction[ snooperLexerprs._termCheck[k] == sym ? k : la_state];
    }
}
